package com.yunhe.authority.service.company;

import com.yunhe.authority.domain.company.*;
import com.yunhe.authority.model.paymentInfo.IncreasePercentVO;
import com.yunhe.common.exception.ArgumentErrorException;

import java.util.List;

/**
 * @ClassName: PaymentInfoService
 * @Description:
 * @author: GongDaCheng
 * @Date: 15:57 2021/7/19
 */
public interface PaymentInfoService {

    /**
     * @Description 保存企业物业费用信息
     * @Param Long companyId, PropertyCost propertyCost
     * @Return PropertyCost
     * @Date 2021/7/16 15:48
     */
    PropertyCost savePropertyCost(Long companyId, PropertyCost propertyCost) throws ArgumentErrorException;

    /**
     * @Description 根据企业id查询企业物业费用信息
     * @Param Long companyId
     * @Return PropertyCost
     * @Date 2021/7/16 16:23
     */
    PropertyCost getPropertyCostByCompanyId(Long companyId) throws ArgumentErrorException;

    /**
     * @Description 保存企业物业费用增幅比例
     * @Param Long companyId, IncreasePercent increasePercent
     * @Return IncreasePercent
     * @Date 2021/7/16 17:02
     */
    IncreasePercent saveIncreasePercent(Long companyId, IncreasePercentVO increasePercentVO);

    /**
     * @Description 根据企业id查询企业物业费用增幅比例
     * @Param Long companyId
     * @Return IncreasePercentVO
     * @Date 2021/7/16 17:46
     */
    IncreasePercentVO getIncreasePercentByCompanyId(Long companyId);

    /**
     * @Description 保存水电缴费信息
     * @Param Long companyId, WaterElectricityCost waterElectricityCost
     * @Return WaterElectricityCost
     * @Date 2021/7/15 17:46
     */
    WaterElectricityCost saveWEC(Long companyId, WaterElectricityCost waterElectricityCost);

    /**
     * @Description 根据企业id获取企业水电缴费信息
     * @Param Long companyId
     * @Return WaterElectricityCost
     * @Date 2021/7/16 10:56
     */
    WaterElectricityCost getWECByCompanyId(Long companyId) throws ArgumentErrorException;

    /**
     * @Description 保存企业缴费其他费用信息
     * @Param Long companyId, OtherCost otherCost
     * @Return OtherCost
     * @Date 2021/7/16 11:07
     */
    OtherCost saveOtherCost(Long companyId, OtherCost otherCost);

    /**
     * @Description 根据企业id查询企业缴费其他费用信息
     * @Param Long companyId
     * @Return OtherCost
     * @Date 2021/7/16 11:07
     */
    OtherCost getOtherCostByCompanyId(Long companyId) throws ArgumentErrorException;

    /**
     * @Description 新增合同附件
     * @Param Long companyId, ContractAccessories contractAccessories
     * @Return ContractAccessories
     * @Date 2021/7/16 14:51
     */
    ContractAccessories createContract(Long companyId, ContractAccessories contractAccessories);

    /**
     * @Description 查看合同附件列表
     * @Param Long companyId
     * @Return List<ContractAccessories>
     * @Date 2021/7/19 9:52
     */
    List<ContractAccessories> findAllContract(Long companyId);

    /**
     * @Description 更新合同附件
     * @Param Long companyId, Long id
     * @Return ContractAccessories
     * @Date 2021/7/19 10:50
     */
    ContractAccessories updateContract(Long companyId, Long id, ContractAccessories contractAccessories);

    /**
     * @Description 删除合同附件
     * @Param Long id
     * @Return
     * @Date 2021/7/19 9:28
     */
    void deleteContract(Long id);

    /**
     * @Description 解绑并删除企业缴费信息、合同附件
     * @Param Long companyId
     * @Return
     * @Date 2021/8/17 17:18
     */
    void unbindDeleteCompanyPaymentInfo(Long companyId);

}
